1924C - Fractal Origami - CodeForces Solution


geometry math matrices *2400

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
LL MOD = 999999893;

LL pow(LL a, LL b) {
	if (b == 0) return 1LL;
	LL half = pow(a, b / 2);
	half = half * half; half %= MOD;
	if (b % 2 == 0) return half;
	return (half * a) % MOD;
}

void solve() {
	LL N; cin >> N;
	if (N % 2 == 1) {
		N /= 2;
		LL ans = pow(2LL, N) - 1;
		LL m = pow(2LL, 2 * N) + pow(2LL, N + 1) - 1;
		if (m < 0) {
			LL temp = abs(m / MOD) + 1;
			m += MOD * temp;
		}
		m %= MOD;
		ans *= pow(m, MOD - 2); ans %= MOD;
		cout << ans << '\n';
	} else {
		N /= 2; --N;
		LL ans = pow(2LL, N + 1) - 1;
		LL m = 1 - pow(2LL, 2 * N + 1) + pow(2LL, N + 2) - 2;
		if (m < 0) {
			LL temp = abs(m / MOD) + 1;
			m += MOD * temp;
		}
		m %= MOD;
		ans *= pow(m, MOD - 2); ans %= MOD;
		cout << ans << '\n';
	}
}

int main() {
	ios::sync_with_stdio(0); cin.tie(0);
	int t; cin >> t;
	while (t--) solve();
}


Comments

Submit
0 Comments
More Questions

734B - Anton and Digits
1080A - Petya and Origami
1642D - Repetitions Decoding
1440A - Buy the String
1658F - Juju and Binary String
478A - Initial Bet
981A - Antipalindrome
365A - Good Number
1204B - Mislove Has Lost an Array
1409D - Decrease the Sum of Digits
1476E - Pattern Matching
1107A - Digits Sequence Dividing
1348A - Phoenix and Balance
1343B - Balanced Array
1186A - Vus the Cossack and a Contest
1494A - ABC String
1606A - AB Balance
1658C - Shinju and the Lost Permutation
1547C - Pair Programming
550A - Two Substrings
797B - Odd sum
1093A - Dice Rolling
1360B - Honest Coach
1399C - Boats Competition
1609C - Complex Market Analysis
1657E - Star MST
1143B - Nirvana
1285A - Mezo Playing Zoma
919B - Perfect Number
894A - QAQ